package com.subject.auth.infra.basic.service.impl;

import com.subject.auth.infra.basic.entity.AuthUser;
import com.subject.auth.infra.basic.mapper.AuthUserDao;
import com.subject.auth.infra.basic.service.AuthUserService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * 用户信息表(AuthUser)表服务实现类
 *
 * @author makejava
 * @since 2024-09-10 23:27:50
 */
@Service("authUserService")
public class AuthUserServiceImpl implements AuthUserService {
    @Resource
    private AuthUserDao authUserDao;

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public AuthUser queryById(Long id) {
        return this.authUserDao.queryById(id);
    }

    /**
     * 新增数据
     *
     * @param authUser 实例对象
     * @return 实例对象
     */
    @Override
    public Integer insert(AuthUser authUser) {
        return this.authUserDao.insert(authUser);
    }

    /**
     * 修改数据
     *
     * @param authUser 实例对象
     * @return 实例对象
     */
    @Override
    public Integer update(AuthUser authUser) {
        return this.authUserDao.update(authUser);
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    @Override
    public boolean deleteById(Long id) {
        return this.authUserDao.deleteById(id) > 0;
    }

    /**
     * 根据条件查询用户列表
     *
     * @param authUser 查询条件对象，包含要查询的用户信息
     * @return 用户列表，包含符合查询条件的所有用户信息
     */
    @Override
    public List<AuthUser> queryByCondition(AuthUser authUser) {
        return this.authUserDao.queryAllByLimit(authUser);
    }

    /**
     * 根据用户名更新用户信息
     *
     * @param authUser 更新后的用户信息对象
     * @return 更新的行数，以便调用方可以了解更新操作的结果如果更新成功，返回的值应该大于0
     */
    @Override
    public Integer updateByUserName(AuthUser authUser) {
        return this.authUserDao.updateByUserName(authUser);
    }

    /**
     * 根据用户ID列表查询用户信息
     *
     * @param ids 用户ID列表，不为空
     * @return 包含所有指定用户ID的用户信息列表如果数据库中没有对应ID的用户，则返回空列表
     */
    @Override
    public List<AuthUser> listUserInfoByIds(List<String> ids) {
        return this.authUserDao.listUserInfoByIds(ids);
    }
}
